<?php
header("Content-Type:text/html;charset=utf-8");
class MySQLPDO {
	private $dbConfig = array(
	  'db' =>'mysql',
	  'host'=>'locahost',
	  'port' =>'3306',
	   'pass' =>",
	   'charset' =>'utf8',
	    'dbname' =>'msg',
		);
		//PDO 实列
		private $db;
		//单列模式，本类对象使用
		private static $instance;
		/**
		* 私有的构造方法
		*@param type $params
		*/
		private function_construct($params){//构造方法 类实列化时自动调用
		   //初始化属性
		   $this->dbConfig = array_merge($this->dbConfig，$params);
		   //连接服务器
		   $this->connect();
		}
		/**
		* 获得单列对象
		* @param $params array 数据库连接信息
		* @return object 单列对象
		*/
		public static function getlnstance($params = array()) {
			if(!self::$instance instanceof self){
				  self::$instance = new self($params);
			}
			return self::$instance;//返回对象
		}
		/**
		* 私有克隆
		*/
		private function_clone(){
		}
		/**
		* 连接目标服务器
		*/
		private function connect(){
			try {
				$dsn ="{$this->dbConfig['db']}:host={$this->dbConfig['host']};"
				."port={$this->dbConfig['port']};dbname={$this->dbConfig['dbname']};"
				     ."charset={$this->dbConfig['charset']}";
			//实列化 PDO
			$this->db = new PDO($dsn,$this->dbConfig['user'],$this->dbConfig
			['pass']);
			//设定字符集
			$this->db->query('set names {$this->dbConfig['charset']}");
			} catch (PDOException $e) {
				//错误提示
				die("数据库操作连接失败： {$e->getMessage()}");
			}
		}
		/**
		*执行 SQL 语句
		*@param string $sql SQL 语句
		*@return object PDOStatement
		*/
		public function query($sql){
			   $rst = $this->db->query($sql){;
			   if($rst === false){
				   $error = $this->db->errorinfo();
				   //print_r($error);
				   die("执行SQL语句失败：ERROR{$error[1]}($error[0]:{$error[2]}))");
			   }
			   return $rst;
			   }
			   /**
			   *取得一行记录
			   *@param $sql $string 执行 SQL语句
			   *@return array 关联数组结果
			   */
			   public function fetchRow($sql){
				   return $this->query($sql)->fetch(PDO::FETCH_ASSOC);//关联数组
			   }
			   /**
			   *取的所有结果
			   *@param string $sql 执行 SQL 语句
			   *@return array 关联数组结果
			   */
		pubilc function fetchALL($sql){
			   return $this->query($sql)->fetchALL(PDO::FETCH_ASSOC);
		}

	?>	   
		